package cn.aiweiyi.qingjing.coupon.template.controller;

import cn.aiweiyi.qingjing.coupon.comm.exception.CouponException;
import cn.aiweiyi.qingjing.coupon.template.entity.CouponTemplate;
import cn.aiweiyi.qingjing.coupon.template.service.BuildTemplateService;
import cn.aiweiyi.qingjing.coupon.template.service.TemplateBaseService;
import cn.aiweiyi.qingjing.coupon.comm.vo.CouponTemplateSDK;
import cn.aiweiyi.qingjing.coupon.comm.vo.TemplateRequest;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author 青衿
 * @Date 2020/11/17 16:51
 * 优惠券模块业务控制器
 **/
@Slf4j
@RestController
public class CouponTemplateController {
    /**
     * 构建优惠券模板服务
     */
    @Autowired
    private BuildTemplateService buildTemplateService;

    /**
     * 优惠券模块板基础服务
     */
    @Autowired
    private TemplateBaseService templateBaseService;

    /**
     * <h2>构建优惠券模板</h2>
     * 127.0.0.1:7001/coupon-template/template/build
         * 127.0.0.1:9000/ketai-coupon/coupon-template/template/build?id=10
     */
    @PostMapping("/template/build")
    public CouponTemplate buildTemplate(@RequestBody TemplateRequest request) throws CouponException {
        log.info("Build Template:{}", JSON.toJSONString(request));
        return buildTemplateService.bulidTemplate(request);
    }

//    /**
//     * <h2>构建优惠券模板</h2>
//     * 127.0.0.1:7001/coupon-template/template/build
//     * 127.0.0.1:9000/ketai-coupon/coupon-template/template/build?id=10
//     */
//    @PostMapping("/template/build")
//    public CouponTemplate buildTemplate(@RequestBody TemplateRequest request) throws CouponException {
//        log.info("Build Template:{}", JSON.toJSONString(request));
//        return buildTemplateService.bulidTemplate(request);
//    }

    /**
     * <h2>查询单个优惠券模板详情</h2>
     * 127.0.0.1:7001/coupon-template/template/info?id=1
     * localhost:9000/ketai-coupon/coupon-template/template/info?id=10
     */
    @GetMapping("/template/info")
    public CouponTemplate findTemplateInfo(@RequestParam(value = "id") Integer id) throws CouponException {
        log.info("Build Template Info For:{}", id);
        return templateBaseService.findTemplateInfo(id);
    }

    /**
     * <h2>获取模板 ids 到CouponTemplateSDK的映射</h2>
     * 127.0.0.1:7001/coupon-template/template/sdk?infos
     */
    @GetMapping("/template/sdk/infos")
    public Map<Integer, CouponTemplateSDK> findIdsTemplateSDK(@RequestParam(value = "ids") Collection<Integer> ids) {
        log.info("FindIdsTemplateSDK:{}", JSON.toJSONString(ids));
        return templateBaseService.findIds2TemplateSDK(ids);
    }

    //查询所有模板
    @GetMapping("/template/sdk/all")
    public List<CouponTemplateSDK> findAllUsableTemplate(){
        log.info("findAllUsableTemplate:{}");
        return templateBaseService.findAllUsableTemplate();
    }
}
